جزوه · فصل نهم · جلسه ۸۰ · انواع شل و فایل‌های پیکربندی ← بازگشت به فهرست
📘 فصل نهم · جلسه ۸۰ انواع شل و فایل‌های پیکربندی
📅 تاریخ: چهارشنبه، ۳ شهریور ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
این جلسه یکی از مباحث مهم در LPIC و RHCSA است. ترتیب اجرای فایل‌های پیکربندی و تفاوت انواع شل (Login, Interactive, Non-interactive) حتماً در آزمون می‌آید.
🏠 قبل از شروع، یه مثال ساده:

فرض کن یه ساختمان داری که چند تا در ورودی داره. هر بار که از یه در وارد میشی، یه سری قوانین و تنظیمات برات فعال میشه. توی لینوکس، شل (Shell) هم مثل همون ساختمان هست و فایل‌های پیکربندی مثل قوانین ورودی هستن. بسته به اینکه چطور وارد میشی (لاگین، ترمینال جدید، اسکریپت)، فایل‌های مختلفی اجرا میشن. این جلسه بهت یاد میده چطور این قوانین رو مدیریت کنی!

▍ شل (Shell) چیست و چگونه اجرا می‌شود؟

شل (Shell) یک واسط (Interface) بین کاربر و هسته لینوکس است که دستورات را دریافت و اجرا می‌کند. در لینوکس، شل به سه روش اصلی اجرا می‌شود:

🔵 Login Shell

  • زمانی که با نام کاربری و رمز عبور وارد سیستم می‌شوید.
  • فایل‌های /etc/profile و ~/.bash_profile اجرا می‌شوند.
  • محیط کاربری کامل تنظیم می‌شود.

🟢 Interactive Shell

  • زمانی که یک ترمینال جدید در محیط GUI باز می‌کنید.
  • فایل‌های /etc/bash.bashrc و ~/.bashrc اجرا می‌شوند.
  • بدون ورود مجدد، تنظیمات شخصی اعمال می‌شود.

🔴 Non-interactive Shell

  • زمانی که یک اسکریپت (Script) را اجرا می‌کنید.
  • هیچ ورودی از کاربر دریافت نمی‌شود.
  • فایل‌های پیکربندی کمتر اجرا می‌شوند (برای سرعت).
نکته امتحانی: در Non-interactive Shell، فایل‌های /etc/profile و ~/.bash_profile اجرا نمی‌شوند.

▍ فایل‌های پیکربندی شل (Bash)

وقتی یک شل (مخصوصاً Bash) اجرا می‌شود، فایل‌های پیکربندی مختلفی را می‌خواند تا محیط کاربری را تنظیم کند. این فایل‌ها به ترتیب زیر اجرا می‌شوند:

• ۱. /etc/profile

این فایل سیستمی است و برای همه کاربران اجرا می‌شود. معمولاً شامل تنظیمات عمومی مانند PATH، umask و متغیرهای محیطی است.

/etc/profile فقط در Login Shell اجرا می‌شود.

• ۲. فایل‌های شخصی (در Home کاربر)

این فایل‌ها در دایرکتوری خانه کاربر قرار دارند و به ترتیب زیر بررسی می‌شوند:

/etc/profile # عمومی (همه کاربران) ~/.bash_profile # شخصی (اولویت اول) ~/.bash_login # شخصی (اولویت دوم) ~/.profile # شخصی (اولویت سوم) ~/.bash_logout # هنگام خروج از شل
💡 نکته: فایل ~/.bash_logout زمانی که از شل خارج می‌شوید اجرا می‌شود و معمولاً برای پاکسازی محیط استفاده می‌شود.

• ۳. /etc/bash.bashrc و ~/.bashrc

این فایل‌ها در Interactive Shell (غیر از Login) اجرا می‌شوند. /etc/bash.bashrc عمومی است و ~/.bashrc شخصی است.

/etc/bash.bashrc # عمومی (همه کاربران برای Interactive Shell) ~/.bashrc # شخصی (برای Interactive Shell)
تفاوت مهم: در Login Shell، ~/.bashrc اجرا نمی‌شود (مگر اینکه در ~/.bash_profile به آن اشاره شود). در Interactive Shell، ~/.bashrc اجرا می‌شود.

▍ جدول خلاصه فایل‌های پیکربندی

فایل نوع شل کاربرد
/etc/profile Login Shell تنظیمات عمومی سیستم
~/.bash_profile Login Shell تنظیمات شخصی (اولویت اول)
~/.bash_login Login Shell تنظیمات شخصی (اولویت دوم)
~/.profile Login Shell تنظیمات شخصی (اولویت سوم)
/etc/bash.bashrc Interactive Shell تنظیمات عمومی برای Interactive Shell
~/.bashrc Interactive Shell تنظیمات شخصی برای Interactive Shell
~/.bash_logout خروج از شل پاکسازی محیط هنگام خروج

▍ حالت Sub Shell

Sub Shell یک شل جدید است که از یک شل والد (Parent Shell) ایجاد می‌شود. این شل تنظیمات والد را به ارث می‌برد، اما متغیرهای Local در آن قابل دسترس نیستند (مگر اینکه Global باشند).

┌──(ya3in㉿kali)-[~] └─$ ( cd /tmp; ls ) file1.txt file2.txt temp/ └─$ pwd /home/ya3in

توضیح: دستور داخل پرانتز در یک Sub Shell اجرا می‌شود و پس از اتمام، به دایرکتوری قبلی برمی‌گردد.

Sub Shell با پرانتز () ایجاد می‌شود و تغییرات آن بر Parent Shell تأثیر نمی‌گذارد.

▍ دستور alias

alias به شما اجازه می‌دهد برای دستورات طولانی یا پیچیده، یک نام مستعار ایجاد کنید.

┌──(ya3in㉿kali)-[~] └─$ alias ll='ls -la' └─$ ll total 48 drwxr-xr-x 5 ya3in ya3in 4096 Aug 26 10:00 . drwxr-xr-x 3 root root 4096 Aug 26 08:15 .. -rw-r--r-- 1 ya3in ya3in 220 Aug 26 09:00 .bashrc

توضیح: با alias ll='ls -la'، هر بار که ll را تایپ می‌کنید، ls -la اجرا می‌شود.

┌──(ya3in㉿kali)-[~] └─$ alias alias ll='ls -la' alias la='ls -A' alias l='ls -CF'

توضیح: alias بدون آرگومان، لیست همه نام‌های مستعار را نمایش می‌دهد.

برای حذف یک alias از unalias alias_name استفاده کنید.
✅ جمع‌بندی نهایی:
  • Login Shell: /etc/profile و ~/.bash_profile (یا ~/.bash_login یا ~/.profile)
  • Interactive Shell: /etc/bash.bashrc و ~/.bashrc
  • Non-interactive Shell: فقط برای اجرای اسکریپت‌ها (بدون فایل‌های پیکربندی)
  • Sub Shell: با () ایجاد می‌شود و تغییرات آن موقتی است.
  • Alias: با alias name='command' ایجاد می‌شود و با unalias حذف می‌شود.